package hn.cch.grammar.keyword;

/**
 * 代码块
 */
public class CodeBlockDemo {


    static {
        // 静态代码块：定义在类中，使用static修饰
        // 只会执行一次，优先构造函数
        System.out.println("static code block");
    }

    {
        // 类代码块：定义在类中
        // 创建类时执行，优先构造函数
        System.out.println("class code block");
    }

    public CodeBlockDemo() {
        // 构造器
        System.out.println("constructor code block");
    }

    public void method() {

        {
            // 方法代码块：定义在方法内
            // 调用方法时被执行
            System.out.println("method code block");
        }

        synchronized (CodeBlockDemo.class) {
            // 同步代码块：定义在方法内，使用synchronized修饰
            // 在多线程中只能
            System.out.println("synchronized code block");
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 2; i++) {
            CodeBlockDemo codeBlock = new CodeBlockDemo();
            codeBlock.method();
        }

    }
}
